package bishiqiangxun;
import java.io.*;
import java.util.*;
public class Test2 {
    //day24第二题  最大子矩阵
    //算法 ：动态规划  前缀和
    public static void main (String[] args) throws IOException {
        //IO输入
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        int[][] arr = new int[n][n];
        for(int i = 0;i < n;++i) {
            String[] Strings = reader.readLine().trim().split(" ");
            for(int j = 0; j< n;++j) {
                arr[i][j] = Integer.parseInt(Strings[j]);
            }
        }

        //找最大的   多个矩阵一起   要是  一维矩阵 就相当于 找最大的子序列

        int max = Integer.MIN_VALUE;
        for(int k = 0; k < n; k++) {
            int[] sum = new int[n];
            for(int l = k; l < n; l++) {
                for(int m = 0; m < n; m++) {
                    sum[m] += arr[l][m];  //相当于 和的数组  类似前缀和数组

                }
                max =Math.max(max,Max(sum));
            }
        }
        System.out.println(max);

    }
    private static int Max(int[] sum) {
        //这里用动态规划 直接找出最大的  加上前面的和大 还是 不加大 找最大的
        int n = sum.length;
        int[] dp = new int[n];
        dp[0] = sum[0];  //一开始就数组0下标的元素  后面根据递推公式找最大的
        int max = sum[0];
        for(int i = 1; i < n;i++){
            dp[i] = Math.max(dp[i-1]+sum[i],sum[i]);
            max = Math.max(max,dp[i]);
        }
        return max;
    }
}
